import unittest

from parameterized import parameterized

from ihrmApiTest import utils
from ihrmApiTest.api.emp_api import EmpApi
from ihrmApiTest.api.login_api import LoginApi


class TestEmp(unittest.TestCase):

    def setUp(self) -> None:
        # 实例化封装的类
        self.login_api = LoginApi()
        self.emp_api = EmpApi()

    # 员工管理-增，删，改，查
    @parameterized.expand(utils.read_json("emp_case_data"))
    def test01_emp_manage(self, sql_str, login_json_dict, add_emp_json_dict, update_emp_json_dict, exp_success,
                          exp_code, exp_msg):
        # 测试数据初始化
        # sql_str = "delete from bs_user where mobile ='18934752321'"
        utils.DBUtil.exe_sql(sql_str)

        # 1.获取完整的token
        # login_json_dict = {"mobile": "13800000001", "password": "123456"}
        token = self.login_api.get_token(login_json_dict)

        # 2.调用封装新增员工的方法，获取响应数据
        # add_emp_json_dict = {"username": "张三", "mobile": "18934752321", "workNumber": "9527"}
        add_emp_res = self.emp_api.add_emp(token, add_emp_json_dict)

        # 提取新增员工ID
        add_emp_id = add_emp_res.json().get("data").get("id")

        # 断言--调用公共断言方法
        utils.common_assert(self, add_emp_res, exp_success, exp_code, exp_msg)

        # 3.调用封装查询员工的方法，获取响应数据
        query_emp_res = self.emp_api.query_emp(token, add_emp_id)

        # 断言
        utils.common_assert(self, query_emp_res, exp_success, exp_code, exp_msg)

        # 4.调用封装修改员工的方法，获取响应数据
        # update_emp_json_dict = {"username": "赵四"}
        update_emp_res = self.emp_api.update_emp(token, add_emp_id, update_emp_json_dict)

        # 断言
        utils.common_assert(self, update_emp_res, exp_success, exp_code, exp_msg)

        # 5.调用封装删除员工的方法，获取响应数据
        del_emp_res = self.emp_api.del_emp(token, add_emp_id)

        # 断言
        utils.common_assert(self, del_emp_res, exp_success, exp_code, exp_msg)
